package bo.zhao.action.simple_factory;

import bo.zhao.action.simple_factory.factory.EnumFactory;
import bo.zhao.action.simple_factory.factory.MultiFactory;
import bo.zhao.action.simple_factory.factory.NormalFactory;
import bo.zhao.action.simple_factory.factory.StaticMultiFactory;
import bo.zhao.action.simple_factory.factory.EnumFactory.SenderType;
import bo.zhao.action.simple_factory.product.ISender;

 
public class SimpleFactoryTest {

	public static void main(String[] args) {
		normal();
		multi();
		staticMulti();
		enumFac();
	}
	
	 
	public static void normal() {
		
		//创建工厂
		NormalFactory sf=new NormalFactory();
		//生产对象
		ISender sender=sf.produce("sms");
		//执行
		sender.send("测试 SMS 内容");
		
		//生产对象
		sender=sf.produce("mail");
		//执行
		sender.send("测试 MAIL 内容");
		
	}
	
	public static void enumFac() {
		
		//创建工厂
		EnumFactory sf=new EnumFactory();
		//生产对象
		ISender sender=sf.produce(SenderType.SMS);
		//执行
		sender.send("测试 SMS 内容");
		
		//生产对象
		sender=sf.produce(SenderType.MAIL);
		//执行
		sender.send("测试 MAIL 内容");
		
	}
	
	public static void multi() {
		
		//创建工厂
		MultiFactory sf=new MultiFactory();
		//生产对象
		ISender sender=sf.produceSMSSender();
		//执行
		sender.send("测试 SMS 内容");
		
		//生产对象
		sender=sf.produceSMSSender();
		//执行
		sender.send("测试 MAIL 内容");
		
	}
	
	public static void staticMulti() {
		
		//生产对象
		ISender sender=StaticMultiFactory.produceSMSSender();
		//执行
		sender.send("测试 SMS 内容");
		
		//生产对象
		sender=StaticMultiFactory.produceSMSSender();
		//执行
		sender.send("测试 MAIL 内容");
		
	}
	
}
